package cn.tedu.charging.cost.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.io.Serializable;

/**
 * Redis 配置类
 */
@Configuration
public class RedisConfiguration {

    @Bean   //用<String, Object>当K-V也行，但spring推荐用Serializable，Serializable是个标记接口，就是打个标记，说这儿的V值全能序列化
    public RedisTemplate<String, Serializable> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置连接工厂    写完这行，去test测试k1和k2，然后发现k2没有指定序列化器的问题
        redisTemplate.setConnectionFactory(connectionFactory);

        //设置key的序列化器    以后redis保存的所有key都是字符串格式，保存的value都是json格式
        redisTemplate.setKeySerializer(RedisSerializer.string());
        //设置value的序列化器
        redisTemplate.setValueSerializer(RedisSerializer.json());

        return redisTemplate;
    }
}
